package com.example.demo.factoryMethodModel;

/**
 * 抽象工厂类
 */
public abstract class AbstractHumanFactory {

    /**
     * 我们在这里采用了泛型（Generic），通过定义泛型对createHuman的输入参数产生两层限制：
     * 必须是Class类型；
     * 必须是Human的实现类。
     * 创建一个产品对象，其输入参数类型可以自行设置
     * 通常为String、Enum、Class等，当然也可以为空
     * @param c
     * @param <T>
     * @return
     */
    public abstract <T extends Human> T createHuman(Class<T> c);
}
